package mall.kotlin.com.kotlinlearn.part

import org.junit.Test

class 第四章高阶函数 {
    @Test
    fun Test1() {
//        //常见高阶函数使用
//        val list = listOf(1,2,3,4,5,6,7)
//        val newList = ArrayList<Int>()
//        list.forEach {
//            val newElement = it*2+3
//            newList.add(newElement)
//        }
//        newList.forEach(::println)
//
//        //map内置高阶函数
//        val newList2 = list.map { it*2+3 }
//        newList2.forEach(::println)
//
//        val newList3 = list.map {
//            it.toDouble()
//        }
//        val newList4 = list.map (Int::toDouble)


        //数据铺平
        val list = listOf(1..20, 2..5, 100..322)
        val flatList = list.flatMap { it }
        val flatList2 = list.flatMap { it.map { "NO.$it" } }
        val flatList3 = list.flatMap { intRange ->
            intRange.map { intElement ->
                "NO.$intElement"
            }
        }
        flatList2.forEach(::print)
        flatList.reduce { acc, i -> acc + i }

        println((0..6).joinToString (","))

    }

}